from collections import Counter

# Counter统计元素个数
# most_common() 方法用于返回计数最多的元素及其计数，你可以指定返回的元素数量。

# 从列表创建
lst = ['apple', 'banana', 'apple', 'cherry']
counter1 = Counter(lst)
print(counter1)

# 遍历 Counter 对象
for x,cnt in counter1.items():
    print(x,cnt)

# 从字符串创建
string = "hello"
counter2 = Counter(string)
print(counter2)

# 列表
lst2=[1,2,5,2,1]
counter3=Counter(lst2)
print(counter3)

# most_common(),返回的是 元组 列表
print("most_common()方法")
lst = ['apple', 'banana', 'apple', 'cherry', 'apple']
counter = Counter(lst)

# 返回所有元素及其计数，按计数从高到低排序
print(counter.most_common())

# 返回计数最多的 2 个元素及其计数
print(counter.most_common(2))

# 删除元素
print("删除元素")
string = "hello"
counter = Counter(string)
# 删除元素 'l'
del counter['l']
print(counter)

# 数学运算
print("数学运算")
counter1 = Counter({'a': 3, 'b': 2})
counter2 = Counter({'a': 1, 'b': 3,'c': 2})

# 加法
add_result = counter1 + counter2
print(add_result)

# 减法,返回的是被减去还剩下的元素
sub_result = counter1 - counter2
print(sub_result)

# 交集，返回的元素是两个 Counter 对象都包含且取最少的元素
intersection_result = counter1 & counter2
print(intersection_result)

# 并集，合并在一起，返回的是两个 Counter 对象都包含且最多的元素
union_result = counter1 | counter2
print(union_result)
